Add ability to set color for the scenario tags.

Guilherme J. Tramontina 10 lat temu
rodzic
commit
d92c6cdc26

+ 2 - 2
app/helpers/agent_helper.rb

@@ -8,11 +8,11 @@ module AgentHelper
8 8
 
9 9
   def scenario_links(agent)
10 10
     agent.scenarios.map { |scenario|
11
-      link_to(scenario.name, scenario, class: "label label-info")
11
+      link_to(scenario.name, scenario, class: "label", style: style_colors(scenario))
12 12
     }.join(" ").html_safe
13 13
   end
14 14
 
15 15
   def agent_show_class(agent)
16 16
     agent.short_type.underscore.dasherize
17 17
   end
18
-end
18
+end

+ 10 - 0
app/helpers/scenario_helper.rb

@@ -0,0 +1,10 @@
1
+module ScenarioHelper
2
+
3
+  def style_colors(scenario)
4
+    colors = {
5
+      color: scenario.tag_fg_color,
6
+      background_color: scenario.tag_bg_color
7
+    }.map { |key, value| "#{key.to_s.dasherize}:#{value}" }.join(';')
8
+  end
9
+
10
+end

+ 1 - 1
app/models/scenario.rb

@@ -1,7 +1,7 @@
1 1
 class Scenario < ActiveRecord::Base
2 2
   include HasGuid
3 3
 
4
-  attr_accessible :name, :agent_ids, :description, :public, :source_url
4
+  attr_accessible :name, :agent_ids, :description, :public, :source_url, :tag_fg_color, :tag_bg_color
5 5
 
6 6
   belongs_to :user, :counter_cache => :scenario_count, :inverse_of => :scenarios
7 7
   has_many :scenario_memberships, :dependent => :destroy, :inverse_of => :scenario

+ 1 - 1
app/views/agents/_action_menu.html.erb

@@ -32,7 +32,7 @@
32 32
 
33 33
     <% agent.scenarios.each do |scenario| %>
34 34
       <li>
35
-        <%= link_to "<span class='color-warning glyphicon glyphicon-remove-circle'></span> Remove from <span class='scenario label label-info'>#{h scenario.name}</span>".html_safe, leave_scenario_agent_path(agent, :scenario_id => scenario.to_param, :return => returnTo), method: :put, :tabindex => "-1" %>
35
+        <%= link_to "<span class='color-warning glyphicon glyphicon-remove-circle'></span> Remove from <span class='scenario label' style='#{style_colors(scenario)}'>#{h scenario.name}</span>".html_safe, leave_scenario_agent_path(agent, :scenario_id => scenario.to_param, :return => returnTo), method: :put, :tabindex => "-1" %>
36 36
       </li>
37 37
     <% end %>
38 38
   <% end %>

+ 1 - 1
app/views/scenario_imports/_step_two.html.erb

@@ -13,7 +13,7 @@
13 13
       <div class="alert alert-warning">
14 14
         <span class='glyphicon glyphicon-warning-sign'></span>
15 15
         This Scenario already exists in your system. The import will update your existing
16
-        <span class='label label-info scenario'><%= @scenario_import.existing_scenario.name %></span> Scenario's title
16
+        <span class='label scenario' style="<%= style_colors(@scenario_import.existing_scenario) %>"><%= @scenario_import.existing_scenario.name %></span> Scenario's title
17 17
         and
18 18
         description. Below you can customize how the individual agents get updated.
19 19
       </div>

+ 13 - 1
app/views/scenarios/_form.html.erb

@@ -15,6 +15,18 @@
15 15
         <%= f.text_field :name, :class => 'form-control', :placeholder => "Name your Scenario" %>
16 16
       </div>
17 17
     </div>
18
+    <div class="col-md-2">
19
+      <div class="form-group">
20
+        <%= f.label :tag_bg_color %>
21
+        <%= f.color_field :tag_bg_color, :class => 'form-control', :placeholder => "#FFFFFF" %>
22
+      </div>
23
+    </div>
24
+    <div class="col-md-2">
25
+      <div class="form-group">
26
+        <%= f.label :tag_fg_color %>
27
+        <%= f.color_field :tag_fg_color, :class => 'form-control', :placeholder => "#000000" %>
28
+      </div>
29
+    </div>
18 30
   </div>
19 31
 
20 32
   <div class="row">
@@ -54,4 +66,4 @@
54 66
       </div>
55 67
     </div>
56 68
   </div>
57
-<% end %>
69
+<% end %>

+ 2 - 1
app/views/scenarios/index.html.erb

@@ -21,6 +21,7 @@
21 21
         <% @scenarios.each do |scenario| %>
22 22
           <tr>
23 23
             <td>
24
+              <span class="label" style="<%= style_colors(scenario) %>" title="Tag"><i class="glyphicon glyphicon-font"></i></span>
24 25
               <%= link_to(scenario.name, scenario) %>
25 26
             </td>
26 27
             <td><%= link_to pluralize(scenario.agents.count, "agent"), scenario %></td>
@@ -47,4 +48,4 @@
47 48
       </div>
48 49
     </div>
49 50
   </div>
50
-</div>
51
+</div>

+ 2 - 2
app/views/scenarios/share.html.erb

@@ -2,7 +2,7 @@
2 2
   <div class='row'>
3 3
     <div class='col-md-12'>
4 4
       <div class="page-header">
5
-        <h2>Share <span class='label label-info scenario'><%= @scenario.name %></span> with the world</h2>
5
+        <h2>Share <span class='label scenario' style="<%= style_colors(@scenario) %>"><%= @scenario.name %></span> with the world</h2>
6 6
       </div>
7 7
 
8 8
       <p>
@@ -30,4 +30,4 @@
30 30
       </div>
31 31
     </div>
32 32
   </div>
33
-</div>
33
+</div>

+ 1 - 1
app/views/scenarios/show.html.erb

@@ -2,7 +2,7 @@
2 2
   <div class='row'>
3 3
     <div class='col-md-12'>
4 4
       <div class="page-header">
5
-        <h2><span class='label label-info scenario'><%= @scenario.name %></span> <%= "Public" if @scenario.public? %> Scenario</h2>
5
+        <h2><span class='label scenario' style="<%= style_colors(@scenario) %>"><%= @scenario.name %></span> <%= "Public" if @scenario.public? %> Scenario</h2>
6 6
       </div>
7 7
 
8 8
       <% if @scenario.description.present? %>

+ 6 - 0
db/migrate/20140820003139_add_tag_color_to_scenarios.rb

@@ -0,0 +1,6 @@
1
+class AddTagColorToScenarios < ActiveRecord::Migration
2
+  def change
3
+    add_column :scenarios, :tag_bg_color, :string, default: '#5bc0de'
4
+    add_column :scenarios, :tag_fg_color, :string, default: '#ffffff'
5
+  end
6
+end

+ 2 - 0
db/schema.rb

@@ -111,6 +111,8 @@ ActiveRecord::Schema.define(version: 20140605032822) do
111 111
     t.boolean  "public",      default: false, null: false
112 112
     t.string   "guid",                        null: false
113 113
     t.string   "source_url"
114
+    t.string   "tag_bg_color", default: "#5bc0de"
115
+    t.string   "tag_fg_color", default: "#ffffff"
114 116
   end
115 117
 
116 118
   add_index "scenarios", ["user_id", "guid"], name: "index_scenarios_on_user_id_and_guid", unique: true, using: :btree

+ 12 - 0
spec/helpers/scenario_helper_spec.rb

@@ -0,0 +1,12 @@
1
+require 'spec_helper'
2
+
3
+describe ScenarioHelper do
4
+
5
+  describe '#style_colors' do
6
+    it 'returns a css style-formated version of the scenario foreground and background colors' do
7
+      scenario = users(:bob).scenarios.build(tag_fg_color: '#ffffff', tag_bg_color: '#000000')
8
+      style_colors(scenario).should == "color:#ffffff;background-color:#000000"
9
+    end
10
+  end
11
+
12
+end

+ 9 - 0
spec/models/scenario_spec.rb

@@ -5,6 +5,15 @@ describe Scenario do
5 5
 
6 6
   it_behaves_like HasGuid
7 7
 
8
+  describe "defaults" do
9
+    it "defaults the tag foreground color" do
10
+      new_instance.tag_fg_color.should == '#ffffff'
11
+    end
12
+    it "defaults the tag background color" do
13
+      new_instance.tag_bg_color.should == '#5bc0de'
14
+    end
15
+  end
16
+
8 17
   describe "validations" do
9 18
     before do
10 19
       new_instance.should be_valid